<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:model="http://euss.evaluant.com/schemas/GenerationModel.xsd">
	<xsl:template match="/model:Model">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="model:Model">
		<xsl:apply-templates select="//model:Package"/>
	</xsl:template>
	
	<xsl:template match="model:Package">
		<xsl:copy>
			<xsl:copy-of select="@name"/>
			<xsl:apply-templates select="model:Class"/>
			<xsl:apply-templates select="model:Relationship[count(model:LinkClass)=0]" mode="Normal"/>
			<xsl:apply-templates select="model:Relationship[model:LinkClass]" mode="LinkClass"/>
			<xsl:apply-templates select="model:Enumeration"/>
			<xsl:apply-templates select="model:Interface"/>
		</xsl:copy>
	</xsl:template>

	<xsl:template match="model:Interface">
		<xsl:copy-of select="." />
	</xsl:template>
	
	<xsl:template match="model:Class">
		<xsl:copy-of select="." />
	</xsl:template>	
	
	<xsl:template match="model:Relationship" mode="Normal">
		<xsl:copy-of select="." />
	</xsl:template>
	
	<xsl:template match="model:Relationship" mode="LinkClass">
		<xsl:element name="model:Relationship">
			<xsl:copy-of select="@type"/>
			<xsl:element name="model:Parent">
				<xsl:attribute name="name"><xsl:value-of select="./model:Parent/@name" /></xsl:attribute>
				<xsl:attribute name="role"><xsl:value-of select="./model:Parent/@role" /></xsl:attribute>
				<xsl:attribute name="multiplicity">1</xsl:attribute>
			</xsl:element>
			<xsl:element name="model:Child">
				<xsl:attribute name="name"><xsl:value-of select="./model:LinkClass/@name" /></xsl:attribute>
				<xsl:attribute name="role"><xsl:value-of select="./model:Child/@role" /><xsl:value-of select="./model:LinkClass/@name" /></xsl:attribute>
				<xsl:attribute name="multiplicity"><xsl:value-of select="./model:Child/@multiplicity" /></xsl:attribute>
			</xsl:element>
		</xsl:element>
		
		<xsl:element name="model:Relationship">
			<xsl:copy-of select="@type"/>
			<xsl:element name="model:Parent">
				<xsl:attribute name="name"><xsl:value-of select="./model:LinkClass/@name" /></xsl:attribute>
				<xsl:attribute name="role"><xsl:value-of select="./model:Parent/@role" /><xsl:value-of select="./model:LinkClass/@name" /></xsl:attribute>
				<xsl:attribute name="multiplicity"><xsl:value-of select="./model:Parent/@multiplicity" /></xsl:attribute>
			</xsl:element>
			<xsl:element name="model:Child">
				<xsl:attribute name="name"><xsl:value-of select="./model:Child/@name" /></xsl:attribute>
				<xsl:attribute name="role"><xsl:value-of select="./model:Child/@role" /></xsl:attribute>
				<xsl:attribute name="multiplicity">1</xsl:attribute>
			</xsl:element>
		</xsl:element>

	</xsl:template>
	
	<xsl:template match="model:Enumeration">
		<xsl:copy-of select="." />
	</xsl:template>
	
</xsl:stylesheet>
